Phương pháp chuyển hệ từ nhị phân sang các hệ khác và ngược lại Hệ_nhị_phân

Hệ thập phân

Phương pháp này có thể áp dụng để chuyển số từ bất cứ gốc nào, song bên cạnh đó còn có những phương thức tốt hơn cho những số là tích số của một mũ, với số nguyên 2, chẳng hạn như hệ bát phân (23), và hệ thập lục phân (24) liệt kê dưới đây.

Trong các hệ thống số với giá trị của con số được định vị bởi vị trí của nó trong một dãy các ký hiệu con số, những con số ở vị trí thấp hơn, hoặc vị trí ít quan trọng hơn (ít quan trọng hơn là vì khi tính toán các số lớn và sai số xảy ra, mất những số này sẽ không quan trọng và không gây ảnh hưởng lớn đến kết quả tính toán, chẳng hạn số thập phân 10034 có thể được tính tròn số lại thành 10000 trong một thống kê dân số mà không gây ảnh hưởng lớn đến kết quả thống kê), thường có số mũ nhỏ hơn theo hệ số gốc (20 < 23). Số mũ đầu tiên, là một số kém hơn số lượng các chữ số, của một con số nào đó, bởi 1 giá trị. Một con số có 5 chữ số sẽ có số mũ đầu tiên bằng 4. Trong hệ thập phân, gốc của hệ là 10, vậy số cuối cùng ở bên trái của một số có 5 chữ số có số mũ là 4, được thể hiện là ở vị trí 104 (chục nghìn). Xem xét ví dụ sau:

97352 tương đương với:
9 × 104 (9 ×10000 =90000)cộng
7 × 103 (7 ×1000 =7000)cộng
3 × 102 (3 ×100 =300)cộng
5 × 101 (5 ×10 =50)cộng
2 × 100 (2 ×1 =2)

Phép nhân với gốc của hệ số trở thành một phép tính đơn giản. Vị trí của các chữ số được dịch sang bên trái một vị trí, và số 0 được thêm vào ở phía bên phải của dãy các con số. Ví dụ 9735 nhân 10 bằng 97350. Một cách định giá trị của một dãy các con số, khi một con số được cộng vào sau con số cuối cùng, bằng cách nhân tất cả các chữ số trước con số cuối cùng ấy với gốc của hệ, trừ số cuối cùng ra, rồi cộng với con số ấy sau cùng. 97352 = 9735 x 10 + 2. Một ví dụ trong hệ nhị phân là 11011001112 = 1101100112 x 2 + 1. Đây chính là mấu chốt của phép biến đổi hệ số. Trong mỗi bước làm, chúng ta viết xuống con số sẽ phải đổi hệ theo công thức 2 × k + 0 hoặc 2 × k + 1 với một số nguyên k nào đó, và nó sẽ trở thành một số mới mà chúng ta muốn đổi.

118 tương đương:
59 × 2 +0
(29 × 2 +1) × 2 +0
((14 × 2 +1) × 2 +1) × 2 +0
(((7 × 2 +0) × 2 +1) × 2 +1) × 2 +0
((((3 × 2 +1) × 2 +0) × 2 +1) × 2 +1) × 2 +0
(((((1 × 2 +1) × 2 +1) × 2 +0) × 2 +1) × 2 +1) × 2 +0
1 × 26 + 1 × 25 + 1 × 24 + 0 × 23 + 1 × 22 + 1 × 21 + 0 × 2011101102

Do vậy phương pháp biến đổi một số nguyên, ở hệ thập phân sang hệ nhị phân tương đương, có thể được tiến hành bằng cách chia số này cho 2, và những số dư được viết xuống vào hàng (đơn vị) của nó. Kết quả lại tiếp tục được chia 2, và số dư lại được viết xuống vào hàng (chục) của nó. Phương thức này được tiếp tục nhắc lại cho đến khi thương số của phép chia là 0.

Ví dụ, 118, trong hệ thập phân là:

Phép tínhSố dư
118 ÷ 2 = 590
59 ÷ 2 = 291
29 ÷ 2 = 141
14 ÷ 2 = 70
7 ÷ 2 = 31
3 ÷ 2 = 11
1 ÷ 2 = 01

Lược trình các con số dư theo thứ tự từ dưới lên trên, cho chúng ta một số nhị phân 11101102.

Để biến đổi một số nhị phân sang hệ thập phân, chúng làm ngược lại. Bắt đầu từ bên trái, nhân đôi kết quả, rồi cộng con số bên cạnh cho đến khi không còn con số nào nữa. Lấy ví dụ để đổi 1100101011012 sang hệ thập phân:

Kết quảSố còn lại
0110010101101
0 × 2 + 1 = 110010101101
1 × 2 + 1 = 30010101101
3 × 2 + 0 = 6010101101
6 × 2 + 0 = 1210101101
12 × 2 + 1 = 250101101
25 × 2 + 0 = 50101101
50 × 2 + 1 = 10101101
101 × 2 + 0 = 2021101
202 × 2 + 1 = 405101
405 × 2 + 1 = 81101
811 × 2 + 0 = 16221
1622 × 2 + 1 = 3245

Kết quả là 3245.

Phần phân số trong một số tự nhiên được biến đổi với cùng một phương pháp, dựa vào phép toán chuyển vị nhị phân để tăng gấp đôi hoặc giảm xuống một nửa giá trị của con số.

Với phân số nhị phân có giá trị "0,110101101012", giá trị của con số đầu tiên của phần thập phân là 1 2 {\displaystyle {\begin{matrix}{\frac {1}{2}}\end{matrix}}} , của con số thứ hai là ( 1 2 ) 2 = 1 4 {\displaystyle {\begin{matrix}({\frac {1}{2}})^{2}={\frac {1}{4}}\end{matrix}}} , vân vân. Vậy nếu chúng ta có giá trị 1 ngay sau dấu phẩy thì giá trị của số thập phân ít nhất phải là 1 2 {\displaystyle {\begin{matrix}{\frac {1}{2}}\end{matrix}}} , và tương tự ngược lại. Nếu chúng ta gấp đôi giá trị của con số đó lên thì giá trị của số phải ít nhất là 1. Điều này khiến chúng ta liên tưởng đến một thuật toán: liên tục nhân đôi con số chúng ta cần biến đổi, ghi lại kết quả nếu kết quả ít nhất là 1, nhưng vứt đi phần số nguyên.

Ví dụ: ( 1 3 ) {\displaystyle {\begin{matrix}({\frac {1}{3}})\end{matrix}}} , trong nhị phân là:

Biến đổiKết quả
1 3 {\displaystyle {\begin{matrix}{\frac {1}{3}}\end{matrix}}} 0,
1 3 × 2 = 2 3 < 1 {\displaystyle {\begin{matrix}{\frac {1}{3}}\times 2={\frac {2}{3}}<1\end{matrix}}} 0,0
2 3 × 2 = 1 1 3 ≥ 1 {\displaystyle {\begin{matrix}{\frac {2}{3}}\times 2=1{\frac {1}{3}}\geq 1\end{matrix}}} 0,01
1 3 × 2 = 2 3 < 1 {\displaystyle {\begin{matrix}{\frac {1}{3}}\times 2={\frac {2}{3}}<1\end{matrix}}} 0,010
2 3 × 2 = 1 1 3 ≥ 1 {\displaystyle {\begin{matrix}{\frac {2}{3}}\times 2=1{\frac {1}{3}}\geq 1\end{matrix}}} 0,0101

Vì vậy phần phân số nhắc đi nhắc lại 0,333... tương đương với phần phân số nhắc đi nhắc lại trong hệ nhị phân 0,0101....

hoặc lấy ví dụ số 0,110, trong hệ nhị phân là:

Biến đổiKết quả
0,10,
0.1 × 2 = 0,2 < 10,0
0.2 × 2 = 0,4 < 10,00
0.4 × 2 = 0,8 < 10,000
0.8 × 2 = 1,6 ≥ 10,0001
0.6 × 2 = 1,2 ≥ 10,00011
0.2 × 2 = 0,4 < 10,000110
0.4 × 2 = 0,8 < 10,0001100
0.8 × 2 = 1,6 ≥ 10,00011001
0.6 × 2 = 1,2 ≥ 10,000110011
0.2 × 2 = 0,4 < 10,0001100110

Đây cũng là một phân số vô hạn tuần hoàn 0,000110011.... Có một điều đáng ngạc nhiên là có những phân số thập phân không tuần hoàn nhưng khi chuyển sang nhị phân, nó lại trở thành một phân số tuần hoàn. Chính vì lý do này mà nhiều người thấy ngạc nhiên khi họ kiểm nghiệm thấy phép cộng 0,1 +... + 0,1 (gồm 10 số hạng) khác với giá trị một trong khi giải toán dùng phép toán phân số (floating point arithmetic). Thực tế cho thấy, phân số nhị phân chỉ không tuần hoàn khi dạng thập phân của nó là thương của phép chia giữa một số nguyên và lũy thừa cơ số 2 ( 1 2 , 1 4 , 3 8 . . . ) {\displaystyle 2({\frac {1}{2}},{\frac {1}{4}},{\frac {3}{8}}...)} chứ không phải giữa một số nguyên và bội của 10 ( 1 10 , 3 100 . . . ) . {\displaystyle 10({\frac {1}{10}},{\frac {3}{100}}...).}

Phương pháp biến đổi sau cùng là cách đổi phân số nhị phân sang thập phân. Khó khăn duy nhất là trường hợp của những phân số tuần hoàn, ngoài ra, phương pháp này có thể được thực hiện bằng cách dịch vị trí của dấu thập phân, làm tròn thành số nguyên, biến đổi như cách ở trên, sau đó chia với số mũ của 2 tương ứng trong hệ thập phân. Lấy ví dụ:

x {\displaystyle x} =1100,101110011100...
x × 2 6 {\displaystyle x\times 2^{6}} =1100101110,0111001110...
x × 2 {\displaystyle x\times 2} =11001,0111001110...
x × ( 2 6 − 2 ) {\displaystyle x\times (2^{6}-2)} =1100010101
x {\displaystyle x} =(789/62)10

Một cách khác để biến đổi hệ nhị phân sang thập phân nhanh hơn, đối với những người đã quen thuộc với hệ thập lục phân, là làm bằng cách gián tiếp, đầu tiên đổi ( x {\displaystyle x} trong hệ nhị phân) sang ( x {\displaystyle x} trong hệ thập lục phân), rồi đổi ( x {\displaystyle x} trong hệ thập lục phân) sang ( x {\displaystyle x} hệ thập phân).

Hệ cơ số 32

Số nhị phân có thể đổi sang hệ cơ số 32. Do 32 = 25. Phải cần 5 ký tự số để biểu đạt dễ dàng.

Hệ thập lục phân (cơ số 16 hay hệ hexa)

Số nhị phân có thể đổi được sang hệ thập lục phân đôi chút dễ dàng hơn. Sự dễ dàng này là do gốc của hệ thập lục phân (16) là số mũ của gốc hệ nhị phân (2). Cụ thể hơn 16 = 24. Vậy chúng ta phải cần 4 ký tự số trong hệ nhị phân để có thể biểu đạt được một ký tự số trong hệ thập lục phân.

Bảng liệt kê sau đây chỉ ra cho chúng ta từng ký tự số của hệ thập lục phân, cùng với giá trị tương ứng của nó trong hệ thập phân, và một dãy bốn ký tự số tương đương trong hệ nhị phân.

Thập lục phânThập phânNhị phân
000000
110001
220010
330011
Thập lục phânThập phânNhị phân
440100
550101
660110
770111
Thập lục phânThập phânNhị phân
881000
991001
A101010
B111011
Thập lục phânThập phânNhị phân
C121100
D131101
E141110
F151111

Để biến đổi từ hệ thập lục phân sang số nhị phân tương đương, chúng ta chỉ đơn giản thay thế những dãy ký tự số tương đương trong hệ nhị phân:

3A16 = 0011 10102E716 = 1110 01112

Để biến đổi một số nhị phân sang hệ thập lục phân tương đương, chúng ta phải phân nhóm các ký tự thành nhóm của bốn ký tự số (nhóm bốn con số). Nếu số lượng của các con số không phải là bội số của 4 (4, 8, 16...), thì chúng ta chỉ cần thêm các số 0 vào phía bên trái của con số, còn gọi là phép độn thêm số (padding). Chẳng hạn:

10100102 = 0101 0010 nhóm lại cùng với số độn thêm = 5216110111012 = 1101 1101 nhóm lại = DD16

Để biến đổi một số thập lục phân sang số thập phân tương đương, chúng ta nhân mỗi giá trị thập phân của từng con số trong số thập lục phân với số mũ của 16, rồi tìm tổng của các giá trị:

C0E716 = (12 × 163) + (0 × 162) + (14 × 161) + (7 × 160) = (12 × 4096) + (0 × 256) + (14 × 16) + (7 × 1) = 49.38310

Hệ bát phân (cơ số 8)

Số nhị phân cũng có thể được biến đổi sang hệ bát phân một cách dễ dàng, vì bát phân dùng gốc 8, và cũng là số mũ của 2 (chẳng hạn 23, vậy số bát phân cần 3 ký tự số nhị phân để biểu đạt trọn vẹn một số bát phân). Sự tương ứng giữa các số bát phân và các số nhị phân cũng giống như sự tương đương với tám con số đầu tiên của hệ thập lục phân, như đã liệt kê trên bảng trước đây. Số nhị phân 000 tương đương với số bát phân 0, số nhị phân 111 tương đương với số bát phân 7, và tương tự.

Bát phânNhị phân
0000
1001
2010
3011
Bát phânNhị phân
4100
5101
6110
7111

Phương pháp đổi bát phân sang nhị phân cũng tương tự như cách làm đối với hệ thập lục phân:

658 = 110 1012178 = 001 1112

và từ nhị phân sang bát phân:

1011002 = 101 1002 nhóm lại = 548100112 = 010 0112 nhóm lại với số độn thêm = 238

từ bát phân sang thập phân:

658 = (6 × 81) + (5 × 80) = (6 × 8) + (5 × 1) = 53101278 = (1 × 82) + (2 × 81) + (7 × 80) = (1 × 64) + (2 × 8) + (7 × 1) = 8710